package com.sudo.dao.admin.model.bo.sysconfig;

import com.sudo.common.exception.BizException;
import com.sudo.common.utils.LocalDateTimeUtil;
import com.sudo.common.validenum.EnumValue;
import lombok.Data;

import javax.validation.constraints.Digits;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

@Data
public class SysRoleAutoConfigBO {

    /**
     * 注册角色
      */
    @NotBlank(message = "注册角色不能为空")
    private String setup_code;

    /**
     * 过期角色
     */
    @NotBlank(message = "过期角色不能为空")
    private String expiry_role;

    /**
     * 使用状态（启用禁用ON/OFF）
     */
    @NotBlank(message = "状态代码不能为空")
    @EnumValue(strValues = {"ON","OFF"},message = "状态代码参数不正确")
    private String status;

    /**
     * 是否启用自动化
     */
    @NotBlank(message = "启用自动化状态不能为空")
    @EnumValue(strValues = {"ON","OFF"},message = "自动化状态参数不正确")
    private String run_auto;

    /**
     * 默认过期时间（分钟）
     */
    @NotBlank(message = "默认过期时间不能为空")
    @Digits(message = "默认过期时间只能为数字", integer = 9999, fraction = 0)
    @Min(message = "默认过期时间须在10分钟~3天之内",value = 10)
    private String def_expiry_time;

    /**
     *  过期提示时间（如果为30，则剩余30分钟需要提示用户过期）
     */
    @NotBlank(message = "过期提示时间不能为空")
    @Digits(message = "过期提示时间只能为数字", integer = 9999, fraction = 0)
    @Min(message = "过期提示时间须在10分钟~3天之内",value = 10)
    private String expiry_tip_time;

    // 更新人
    private String update_by;

    // 更新时间
    private String update_time;

    public Map<String,String> bean2Map(String sessionUser, SysRoleAutoConfigBO sysRoleAutoConfigBO) {
        sysRoleAutoConfigBO.setUpdate_by(sessionUser);
        sysRoleAutoConfigBO.setUpdate_time(LocalDateTimeUtil.getStandardDateTimeStr());

        Map<String, String> stringMap = new HashMap<>();
        Field[] declaredFields = this.getClass().getDeclaredFields();
        try {
            for (Field field : declaredFields) {
                stringMap.put(field.getName(), String.valueOf(field.get(sysRoleAutoConfigBO)));
            }
        } catch (IllegalAccessException e) {
            throw new BizException("SysRoleAutoConfigBO#bean2Map 异常", e);
        }
        return stringMap;

    }
}
